/***************************************************
 * 此文件的版权归属xxxx公司所有，未经允许，请勿复制
 */
package com.pxxy.cels.service.impl;

import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;

import com.pxxy.cels.cache.SimpleDataCache;
import com.pxxy.cels.entity.PageBean;
import com.pxxy.cels.entity.Vocabulary;
import com.pxxy.cels.entity.Word;
import com.pxxy.cels.service.IBrowserService;

/************************************************
 * @author yejf
 * @since JDK7.0
 * @CreateDate 2020年4月8日 上午11:29:48
 * @description 此类用来描述了业务1的实现类
 *
 */
public class BrowserServiceImpl implements IBrowserService {

	/*
	 * private IBaseTermDao baseTermDao;
	 * 
	 * public BrowserServiceImpl() { // 初始化持久层对象 this.baseTermDao = new
	 * BaseTermDaoImpl(); }
	 */

	@Override
	public Map<Character, Set<Word>> getFirstMap() {
		// 获取所有的单词
//		Set<Word> words = baseTermDao.getAllWords();
		Set<Word> words = SimpleDataCache.getInstance().loadAllWords();
		// 创建一个Map，把单词按首字母划分
		Map<Character, Set<Word>> firstMap = new TreeMap<Character, Set<Word>>();
		// 准备一个 wordSet
		Set<Word> wordSet = null;
		//
		for (Word w : words) {
			// 判断此单词的首字母，在firstMap中是否存在
			if (firstMap.containsKey(w.getFirst())) {
				// 说明存在此 首字母，则取出对应的 Set
				wordSet = firstMap.get(w.getFirst());
			} else {
				// 说明是第一次有此首字母，则创建一个 Set
				wordSet = new TreeSet<Word>();
				// 存放到map中
				firstMap.put(w.getFirst(), wordSet);
			}
			// 把单词添加到wordSet中
			wordSet.add(w);
		}
		return firstMap;
	}

	@Override
	public PageBean<Vocabulary> getPageVocabularies() {
		// 1. 调用 dao的方法来获取所有的 词汇
//		Set<Vocabulary> vSet = baseTermDao.getAllVocabularies();
		Set<Vocabulary> vSet = SimpleDataCache.getInstance().loadAllVocabularies();
		// 3. 创建PageBean
		PageBean<Vocabulary> pb = new PageBean<>(PAGE_SIZE, vSet);
		// 返回这个pageBean
		return pb;
	}

}
